// 沿着原型链的向上查找，直到找到原型的最顶端，也就是Object.prototype。查找构造函数的 prototype 属性是否出现在某个实例对象的原型链上，如果找到了返回 true，没找到返回 false。
function myInstanceof (v, o) {
    v = v.__proto__
    while (true) {
        if (v === null) {
            return false
        }
        if (v === o.prototype) {
            return true
        }
        v = v.__proto__
    }
}

// Test
class A {}

const a = new A()

console.log(myInstanceof(a, A)) // true
console.log(myInstanceof(a, Object)) // true
console.log(myInstanceof(a, Array)) // false
